ed7e6588d0b290777ca19b577c7f671fef4b04e6,source/com/intellij/openapi/editor/actions/MoveStatementHandler.java,MoveStatementHandler,getRangeToMove,#Editor#PsiFile#,97

Before Change


    if (result.endLine >= maxLine - 1 && isDown) return null;

    final PsiElement guard =
      PsiTreeUtil.getParentOfType(file.findElementAt(editor.getCaretModel().getOffset()), new Class[]{PsiMethod.class, PsiClassInitializer.class,
                                      PsiClass.class});
    // move operation should not go out of method
    final int insertOffset = editor.logicalPositionToOffset(new LogicalPosition(isDown ? result.endLine + 2 : result.startLine - 1, 0));

After Change


    if (result.startLine <= 1 && !isDown) return null;
    if (result.endLine >= maxLine - 1 && isDown) return null;

    final PsiElement elementAt = file.findElementAt(editor.getCaretModel().getOffset());
    if (elementAt == null) return null;
    final PsiElement guard = PsiTreeUtil.getParentOfType(elementAt, new Class[]{PsiMethod.class, PsiClassInitializer.class, PsiClass.class});
    // move operation should not go out of method
    final int insertOffset = editor.logicalPositionToOffset(new LogicalPosition(isDown ? result.endLine + 2 : result.startLine - 1, 0));